package myTest;

import org.junit.jupiter.api.Test;

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

public class LookHashMap {
	public Map<Integer, String> map = new HashMap<Integer, String>(){{
		put(1, "I");put(2, "love");put(3, "Java");
	}};

	@Test
	public void test1(){
		//迭代器（Iterator）EntrySet 的方式遍历
		System.out.println("1---------------------迭代器（Iterator）EntrySet 的方式遍历");
		Iterator<Map.Entry<Integer, String>> iterator = map.entrySet().iterator();
		while (iterator.hasNext()){
			Map.Entry<Integer, String> entry = iterator.next();
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
		//迭代器（Iterator）KeySet 的方式遍历
		System.out.println("2---------------------迭代器（Iterator）KeySet 的方式遍历");
		Iterator<Integer> iterator2 = map.keySet().iterator();
		while (iterator2.hasNext()){
			Integer key = iterator2.next();
			System.out.println(key+":"+map.get(key));
		}
		//for-each结合EntrySet 的方式遍历
		System.out.println("3---------------------for-each结合EntrySet 的方式遍历");
		for (Map.Entry<Integer, String> entry : map.entrySet()) {
			System.out.println(entry.getKey()+":"+entry.getValue());
		}
		//for-each结合KeySet 的方式遍历
		System.out.println("4---------------------for-each结合KeySet 的方式遍历");
		for (Integer integer : map.keySet()) {
			System.out.println(integer+":"+map.get(integer));
		}
		//Lambda方式遍历
		System.out.println("5---------------------Lambda方式遍历");
		map.forEach((key,value) ->{
			System.out.println(key+":"+value);
		});
		//Streams API 单线程时的遍历方式
		System.out.println("6---------------------Streams API 单线程时的遍历方式");
		map.entrySet().stream().forEach((entry)->{
			System.out.println(entry.getKey()+":"+entry.getValue());
		});
		//Streams API 多线程场景下遍历方式
		System.out.println("8---------------------Streams API 多线程场景下遍历方式");
		map.entrySet().parallelStream().forEach((entry)->{
			System.out.println(entry.getKey()+":"+entry.getValue());
		});






	}







}
